/*******************************************************************************
 * Copyright (c) 2008, 2009 Tapestry IDE Developers
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     Tapestry IDE Developers - initial API and implementation
 *******************************************************************************/
package com.googlecode.tapestry.ide.core.model;

/**
 * The <code>IModel</code> manages instances of <code>IModelElement</code>s.
 * <code>IModelChangedListener</code>s register with the <code>IModel</code>,
 * and receive <code>ModelChangedEvent</code>s for all changes.
 */
public interface IModel extends IModelElement {

	/**
	 * Adds the change listener.
	 * 
	 * @param listener
	 *            the listener
	 */
	void addChangeListener(IModelChangeListener listener);

	/**
	 * Removes the change listener.
	 * 
	 * @param listener
	 *            the listener
	 */
	void removeChangeListener(IModelChangeListener listener);
}
